package com.hsnn.medstgmini.base.std.dao.impl;

import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.hibernate.Query;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import com.hsnn.medstgmini.base.dict.dao.impl.BaseHibernateDAO;
import com.hsnn.medstgmini.base.std.dao.StdCompinfoDetailDao;
import com.hsnn.medstgmini.base.std.model.StdCompinfoDetail;
import com.hsnn.medstgmini.base.std.model.StdCompinfoDetailLog;
import com.hsnn.medstgmini.util.Pagination;

/**
 * 企业库 信息详情 接口实现类DAO
 * @author hss@njhsnn
 * 2015年6月10日
 */
@Repository
public class StdCompinfoDetailDaoImpl extends BaseHibernateDAO implements StdCompinfoDetailDao {

	  /**
     * 企业库 基本信息增加和修改
     * @param stdCompinfoDetail
     */
	@Override
	public void addAndEdit(StdCompinfoDetail stdCompinfoDetail) {
		this.getSession().saveOrUpdate(stdCompinfoDetail);
		this.getSession().flush();
	}

	/**
	 * 企业库 基本信息查询与条件查询
	 * @param page
	 * @param stdCompinfoDetail
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<StdCompinfoDetail> queryStdCompinfoDetailList(Pagination page,
			StdCompinfoDetail stdCompinfoDetail) {
		//String compCode = stdCompinfoDetail.getCompCode();

		
		StringBuffer hql = new StringBuffer();
		hql.append(" from StdCompinfoDetail where 1 = 1 ");
//		if(StringUtils.isNotEmpty(compCode)){
//		hql.append(" and comp_code  like ?");
//		}else if(StringUtils.isNotEmpty(compName)){
//			hql.append(" and comp_name  like ? ");
//		}else if(StringUtils.isNotEmpty(compCode) && StringUtils.isNotEmpty(compName)){
//			hql.append(" and comp_code    like ? and comp_name  like ? ");
//		}
		Query query = getSession().createQuery(hql.toString());
//		
//		if(StringUtils.isNotEmpty(compCode)){
//			query.setParameter(0, "%"+compCode+"%");
//			}else if(StringUtils.isNotEmpty(compName)){
//				query.setParameter(0, "%"+compName+"%");
//			}else if(StringUtils.isNotEmpty(compCode) && StringUtils.isNotEmpty(compName)){
//				query.setParameter(0, "%"+compCode+"%");
//				query.setParameter(1, "%"+compName+"%");
//			}
		query.setFirstResult(page.getFirstResult());
		query.setMaxResults(page.getMaxResults());
		return query.list();
	}
	
	/**
	 *  企业库 基本信息维护记录添加
	 * @param stdCompinfoDetailLog
	 */
	@Transactional
	@Override
	public void add(StdCompinfoDetailLog stdCompinfoDetailLog) {
		this.getSession().saveOrUpdate(stdCompinfoDetailLog);
		getSession().flush();
		getSession().clear();
	}

	/**
	 * 企业库基本信息 维护记录查询所有及条件查询
	 * @param stdCompinfoDetailLog
	 * @return
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<StdCompinfoDetailLog> queryStdCompinfoLogByName(
			Pagination page,StdCompinfoDetailLog stdCompinfoDetailLog) {
		String compId = stdCompinfoDetailLog.getCompId();
//		String date1 = stdCompinfoDetailLog.getCompCode();
//		String date2 = stdCompinfoDetailLog.getCompName();
		StringBuffer hql = new StringBuffer();
		hql.append(" from StdCompinfoLog where comp_id = ? ");
//		if(null != date1 && !("").equals(date1)){
//		hql.append(" and upd_datetime > ?");
//		}else if(null != date1 && !("").equals(date1)){
//			hql.append(" and upd_datetime < ? ");
//		}else if(null != date1 && !("").equals(date1) && (null != date2 && !("").equals(date2)) ){
//			hql.append(" and (upd_datetime between  ? and  ? )");
//		}
		Query query = getSession().createQuery(hql.toString());
		query.setParameter(0, compId);
//		if(null != date1 && !("").equals(date1)){
//			query.setParameter(1, date1);
//			}else if(null != date2 && !("").equals(date2)){
//				query.setParameter(1, date2);
//			}else if(null != date1 && !("").equals(date1) && (null != date2 && !("").equals(date2)) ){
//				query.setParameter(1, date1);
//				query.setParameter(2, date2);
//			}
		query.setFirstResult(page.getFirstResult());
		query.setMaxResults(page.getMaxResults());
		return query.list();
	}
}
